using Lzfy_His_Service.Models;

namespace Lzfy_His_Service.Services
{
    public interface IRefundTaskMasterService
    {
        Task<RefundTaskMasterResponse?> GetByIdAsync(long id);
        Task<IEnumerable<RefundTaskMasterResponse>> GetAllAsync();
        Task<(IEnumerable<RefundTaskMasterResponse> data, int totalCount)> GetWithFilterAsync(RefundTaskMasterQueryRequest request);
        Task<IEnumerable<RefundTaskMasterResponse>> GetByUsernameAsync(string username);
        Task<long> CreateAsync(RefundTaskMasterCreateRequest request);
        Task<bool> UpdateAsync(long id, RefundTaskMasterUpdateRequest request);
        Task<bool> DeleteAsync(long id);
        Task<RefundTaskMasterResponse?> GetWithDetailsAsync(long id);
        Task<(long masterId, int actualCount)> CreateWithHisDataAsync(RefundTaskMasterCreateRequest request, int? maxCount = null);
        Task<(IEnumerable<RefundTaskMasterResponse> Data, int TotalCount)> GetAllPagedAsync(int pageIndex = 1, int pageSize = 100);
    }
}